using System;
using Sinacor.Servico.Bovespa.ResumoFinanceiro.BusinessEntity;
using Sinacor.Servico.Bovespa.ResumoFinanceiro.Service.DataContract.Response;
using System.ComponentModel;
using System.Collections.Generic;

namespace Sinacor.Servico.Bovespa.ResumoFinanceiro.Service.ServiceImplementation.Translator
{
	public static class TranslateComitente
	{
		public static DataContract.Response.ComitenteResponse ToComitenteResponse(BusinessEntity.Comitente from)
		{
			Sinacor.Servico.Bovespa.ResumoFinanceiro.Service.DataContract.Response.ComitenteResponse to = new Sinacor.Servico.Bovespa.ResumoFinanceiro.Service.DataContract.Response.ComitenteResponse();
			to.CodigoBolsaMovimento = from.CodigoBolsaMovimento;
			to.NaturezaOperacao = (DataContract.Enum.TipoNaturezaOperacao)  from.Negocio.TipoNaturezaOperacao.Value;
			to.QuantidadeEspecificadaCliente = from.QuantidadeEspecificadaCliente;
			to.VolumeToralNegocios = from.VolumeToralNegocios;
			to.PorcentagemReducaoAcrescimoCorretagem = from.PorcentagemReducaoAcrescimoCorretagem;
			to.CodigoNegocio = from.CodigoNegocio;
            to.TipoMercado = (DataContract.Enum.TipoMercado)from.TipoMercado;
			to.EspecificacaoTitulo = from.Titulo;
			to.ValorNegocio = from.ValorNegocio;
            to.TipoLancamento = (DataContract.Enum.TipoLancamento)from.TipoLancamento;
			to.PorcentagemCustoTotalSobreVolume = from.PorcentagemCustoTotalSobreVolume;
			to.IndicadorCorretagem = from.IndicadorCorretagem;
			to.FatorLiquidacaoNota = from.FatorLiquidacaoNota;
			return to;
		}

		public static List<DataContract.Response.ComitenteResponse> ToComitenteResponseList(List<BusinessEntity.Comitente> from)
		{
			List<DataContract.Response.ComitenteResponse> to = new List<DataContract.Response.ComitenteResponse>();

			foreach (BusinessEntity.Comitente fromItem in from)
			{
				DataContract.Response.ComitenteResponse response = new DataContract.Response.ComitenteResponse();
				response = Translator.TranslateComitente.ToComitenteResponse(fromItem);
				to.Add(response);
			}

			return to;
		}
	}
}

